package com.wxy.payment;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;


/**
 * @author
 * @since 2018/12/13
 */
//代码自动生成
//代码自动生成
public class CodeGenerator {

    @Test
    public void generate() {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/pay?serverTimezone=GMT%2b8", "root", "password")
                .globalConfig(builder -> {
                    builder.author("tutu") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("D:\\2022\\payment" + "/src/main/java")// 指定输出目录
                            .dateType(DateType.ONLY_DATE)//时间策略DateType.ONLY_DATE 默认值: DateType.TIME_PACK
                            .enableSwagger()
                            .disableOpenDir(); //禁止打开输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.wxy") // 设置父包名
                            .moduleName(""); // 设置父包模块名
//                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "/Users/qingxi/Code/qingxi/springboot/boot-mybatis/src/main/resources/mapper/")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.entityBuilder()
                            .enableLombok()//开启 lombok 模型
                            .enableTableFieldAnnotation()//开启生成实体时生成字段注解
                            .idType(IdType.ASSIGN_ID)//主键策略
                            .columnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略 默认下划线转驼峰命名:NamingStrategy.underline_to_camel
                    builder.mapperBuilder().enableMapperAnnotation().build();
                    builder.controllerBuilder().enableHyphenStyle()  // 开启驼峰转连字符
                            .enableRestStyle();  // 开启生成@RestController 控制器
                    builder.addInclude("user") // 设置需要生成的表名
                            .addTablePrefix("_"); // 设置过滤表前缀
                    builder.serviceBuilder().formatServiceFileName("%sService");//格式化 service 接口文件名称
                })
//                    .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();

    }

}
